//
//  FunctionExample.swift
//  SwiftTest
//
//  Created by bym on 2019/8/9.
//  Copyright © 2019 ZZ. All rights reserved.
//

import UIKit

class FunctionExample: NSObject {
	//无参数函数
	
	//多参数函数
	
	//无返回值函数
	
	//多重返回值函数
	
	//可选元组返回类型
	
	//隐式返回的函数 不用写return
	
	/*函数参数标签和参数名称
	*	指定参数标签 				func(外部参数名 内部参数名:内型){}
	*	忽略参数标签 省略外部参数 	func(_ 内部参数名:内型){}
	*	默认参数值				func someFunc(parameterWithDefault:Int = 12) {}
	
	通过在变量类型名后面加入（...）的方式来定义可变参数。
	*	可变参数					print(<#T##items: Any...##Any#>)
	
	函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误。这意味着你不能错误地更改参数值。
	如果你想要一个函数可以修改参数的值，并且想要在这些修改在函数调用结束后仍然存在，那么就应该把这
	个参数定义为输入输出参数（In-Out Parameters）。
	*	输入输出参数
	更多详细文档:https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID545
		*在参数定义前加 inout 关键字
		*你只能传递变量给输入输出参数
	*/
	func swapTwoInts(_ a: inout Int, _ b: inout Int) {
		let temporaryA = a
		a = b
		b = temporaryA
	}
	
	override init() {
		super.init()
		var someInt = 3
		var anotherInt = 107
		//someInt 和 anotherInt 在传入函数前，都加了 & 的前缀：
		swapTwoInts(&someInt, &anotherInt)
	}
	
	//*	函数类型
	//(Int, Int) -> Int
	//没有参数，并返回 Void:() -> Void
}
